
prompt="提取题目，提取测试数据，作为注释" #注意生成的注释，需要检查是否数据错误了。需要去修改后重新进行code生成
"""
华为AI岗 2025年秋招-9月10号 编程题2
题目：22. 统计量列表

题目描述：
给定一个整数序列和一个窗口大小列表。对于每一行输入，固定一个共同的右边界。
对于窗口列表中的每个窗口长度，取一个"右对齐"的子数组。对每个子数组计算5个统计量，
然后按窗口列表的顺序拼接成一行结果。通过将右边界从左到右沿序列移动，重复此过程，生成多行输出。

统计量与计算约定：
1. 输出项：每个子数组必须按固定顺序输出5项：mean, std(标准差), min, max, slope
2. 标准差(std)：计算为样本标准差(ddof=1)，如果窗口长度为1，std为0
3. 斜率(slope)：计算为最小二乘回归线的斜率，x坐标为x=0到w-1，如果分母为0或w=1，斜率为0
4. 数值格式：整数不显示小数点，非整数最多保留3位小数，四舍五入，去除无意义的尾随零

窗口对齐与行数：
- 窗口对齐：右对齐
- 第i行输出的共同右边界R = i + max(window_array) - 1
- 窗口大小w的子数组为arr[R-w+1 ... R]
- 行数n = len(input_array) - max(window_array) + 1
- 如果len(input_array) < 任何窗口大小，输出为空

时间限制：C/C++ 1秒，其他语言 2秒
空间限制：C/C++ 256MB，其他语言 512MB

输入描述：
支持多行输入，每行格式为：[整数序列],[窗口大小序列]
例如：[1, 2, 3, 4, 5], [2, 3]

输出描述：
对每一行输入，按行输出多个结果行；每个结果行是该位置处按窗口列表顺序拼接的统计量列表。
若该行输入不满足条件(如数组过短)，仅输出一行"[]"。

测试数据：

示例1：
输入：[2, 4, 6, 8, 10, 12], [2, 4]
输出：
[7, 1.414, 6, 8, 2, 5, 2.582, 2, 8, 2]
[9, 1.414, 8, 10, 2, 7, 2.582, 4, 10, 2]
[11, 1.414, 10, 12, 2, 9, 2.582, 6, 12, 2]

示例1说明：
- 最长窗口为4，右对齐到各行的共同右边界R，因此共有6-4+1=3行
- 第1行：w=2用[6,8]，w=4用[2,4,6,8]；依序拼接5个特征后输出。其余行同理

示例2：
输入：[10, 20], [3, 4]
输出：[]

示例2说明：
- 输入序列长度为2，最大窗口为4，因2<4无法形成任何右对齐窗口，按规则该行仅输出"[]"

其他测试用例：
输入：[1, 2, 3, 4, 5], [2, 3]
输出：
[2.5, 0.707, 2, 3, 1, 3, 1.414, 1, 4, 1]
[3.5, 0.707, 3, 4, 1, 4, 1.414, 2, 5, 1]

输入：[1, 2, 3], [1, 2, 3]
输出：
[3, 0, 3, 3, 0, 2.5, 0.707, 2, 3, 1, 2, 1, 1, 3, 1]

输入：[5], [2, 3]
输出：[]
"""

import math
import re

def parse_input(line):
    """解析输入行，提取数组和窗口大小列表"""
    # 使用正则表达式匹配数组格式
    pattern = r'\[([^\]]+)\],\s*\[([^\]]+)\]'
    match = re.match(pattern, line.strip())
    
    if not match:
        return None, None
    
    # 解析数组
    arr_str = match.group(1)
    window_str = match.group(2)
    
    # 分割并转换为整数
    arr = [int(x.strip()) for x in arr_str.split(',')]
    windows = [int(x.strip()) for x in window_str.split(',')]
    
    return arr, windows

def calculate_mean(data):
    """计算均值"""
    return sum(data) / len(data)

def calculate_std(data, mean_val):
    """计算标准差 (样本标准差，ddof=1)"""
    if len(data) == 1:
        return 0.0
    
    variance = sum((x - mean_val) ** 2 for x in data) / (len(data) - 1)
    return math.sqrt(variance)

def calculate_slope(data):
    """计算最小二乘回归的斜率"""
    n = len(data)
    if n == 1:
        return 0.0
    
    # x坐标从0到n-1
    x_sum = sum(range(n))
    y_sum = sum(data)
    xy_sum = sum(i * data[i] for i in range(n))
    x2_sum = sum(i * i for i in range(n))
    
    # 计算斜率: slope = (n*sum(xy) - sum(x)*sum(y)) / (n*sum(x^2) - sum(x)^2)
    numerator = n * xy_sum - x_sum * y_sum
    denominator = n * x2_sum - x_sum * x_sum
    
    if denominator == 0:
        return 0.0
    
    return numerator / denominator

def format_number(num):
    """格式化数字输出"""
    if isinstance(num, int) or num == int(num):
        return str(int(num))
    else:
        # 保留最多3位小数，去除无意义的尾随零
        formatted = f"{num:.3f}".rstrip('0').rstrip('.')
        return formatted

def calculate_statistics(data, window_size):
    """计算指定窗口的5个统计量"""
    if len(data) == 0:
        return []
    
    # 计算统计量
    mean_val = calculate_mean(data)
    std_val = calculate_std(data, mean_val)
    min_val = min(data)
    max_val = max(data)
    slope_val = calculate_slope(data)
    
    # 格式化输出
    return [
        format_number(mean_val),
        format_number(std_val),
        format_number(min_val),
        format_number(max_val),
        format_number(slope_val)
    ]

def solve():
    """主函数"""
    while True:
        try:
            line = input().strip()
            if not line:
                break
                
            # 解析输入
            arr, windows = parse_input(line)
            if arr is None or windows is None:
                print("[]")
                continue
            
            # 检查输入是否满足条件
            max_window = max(windows)
            if len(arr) < max_window:
                print("[]")
                continue
            
            # 计算输出行数
            num_rows = len(arr) - max_window + 1
            
            # 生成每一行的结果
            for i in range(num_rows):
                row_results = []
                
                # 对每个窗口大小计算统计量
                for w in windows:
                    # 右对齐窗口：从位置 i+max_window-w 到 i+max_window-1
                    start_idx = i + max_window - w
                    end_idx = i + max_window
                    
                    # 提取窗口数据
                    window_data = arr[start_idx:end_idx]
                    
                    # 计算统计量
                    stats = calculate_statistics(window_data, w)
                    row_results.extend(stats)
                
                # 输出这一行
                print("[" + ", ".join(row_results) + "]")
                
        except EOFError:
            break

if __name__ == "__main__":
    solve()


